export default {
  // 开启命名空间
  namespaced: true,


  state: () => ({
    // 读取本地的收货地址数据，初始化 该 对象
    addressInfo: JSON.parse(uni.getStorageSync('addressInfo') || '{}'), // 用户地址信息
    token: uni.getStorageSync('token') || '', // 用户登录的token
    userInfo: JSON.parse(uni.getStorageSync('userInfo') || '{}'), // 用户基本信息对象
    redirectInfo: null, //存储重定向数据 object 对象 { openType, from }
  }),

  mutations: {
    // 更新收货地址
    updateAddress(state, payload) {
      state.addressInfo = payload
      this.commit('m_user/saveAddressStorage')
    },

    // 持久化存储到本地 mutations 方法
    saveAddressStorage(state) {
      uni.setStorageSync('addressInfo', JSON.stringify(state.addressInfo))
    },

    // 更新用户信息
    updateUserInfo(state, payload) {
      state.userInfo = payload
      // 调用用户信息持久化存储方法
      this.commit('m_user/saveUserInfoStorage')
    },
    
    // 将用户信息持久化存储
    saveUserInfoStorage (state) {
      uni.setStorageSync('userInfo', JSON.stringify(state.userInfo))
    },
    
    // 更新token
    updateToken (state, payload) {
      state.token = payload
      // 调用存储用户登录的token方法
      this.commit('m_user/saveTokenStorage')
    },
    
    // 存储用户登录的token
    saveTokenStorage (state) {
      uni.setStorageSync('token', state.token)
    },
    
    // 更新存储的重定向数据
    updateRedirectInfo (state, payload) {
      // console.log(payload)
      state.redirectInfo = payload
    }
  },

  // 数据包装
  getters: {
    // 收货详细地址的计算属性
    addressConnect: (state) => {
      if (!state.addressInfo.provinceName) return ''
      return state.addressInfo.provinceName + state.addressInfo.cityName + state.addressInfo.countyName + state
        .addressInfo.detailInfo
    }
  }
}
